package com.tdd;

import java.math.BigDecimal;

public class RpnCalculator {
	private HpStack values = new HpStack();

	public BigDecimal peek() {
		return values.peek();
	}

	public void push(BigDecimal value) {
		values.push(value);
	}

	public BigDecimal pop() {
		return values.pop();
	}

	public void execute(String operatorName) {
		Operation op = null;
		
		if ("-".equals(operatorName))
			op = new Minus();
		else if ("!".equals(operatorName))
			op = new Factorial();
		else if ("+".equals(operatorName))
			op = new Plus();
		else
			throw new RuntimeException(String.format("%s - unknown operator",
					operatorName));
		
		op.operate(values);
	}
}
